{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# EnsembleVoteClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Implementation of a majority voting `EnsembleVoteClassifier` for classification."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.classifier import EnsembleVoteClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `EnsembleVoteClassifier` is a meta-classifier for combining similar or conceptually different machine learning classifiers for classification via majority or plurality voting. (For simplicity, we will refer to both majority and plurality voting as majority voting.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "![](./EnsembleVoteClassifier_files/voting.png)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `EnsembleVoteClassifier` implements \"hard\" and \"soft\" voting. In hard voting, we predict the final class label as the class label that has been predicted most frequently by the classification models. In soft voting, we predict the class labels by averaging the class-probabilities (only recommended if the classifiers are well-calibrated).\n",
    "\n",
    "![](./EnsembleVoteClassifier_files/majority_voting.png)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note**\n",
    "\n",
    "If you are interested in using the <code>EnsembleVoteClassifier</code>, please note that it is now also available through scikit learn (>0.17) as <a href=\"http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html\"><code>VotingClassifier</code></a>."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Majority Voting / Hard Voting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hard voting is the simplest case of majority voting. Here, we predict the class label $\\hat{y}$ via majority (plurality) voting of each classifier $C_j$:\n",
    "\n",
    "$$\\hat{y}=mode\\{C_1(\\mathbf{x}), C_2(\\mathbf{x}), ..., C_m(\\mathbf{x})\\}$$\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "Assuming that we combine three classifiers that classify a training sample as follows:\n",
    "\n",
    "- classifier 1 -> class 0\n",
    "- classifier 2 -> class 0\n",
    "- classifier 3 -> class 1\n",
    "\n",
    "$$\\hat{y}=mode\\{0, 0, 1\\} = 0$$\n",
    "\n",
    "Via majority vote, we would we would classify the sample as \"class 0.\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Weighted Majority Vote"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In addition to the simple majority vote (hard voting) as described in the previous section, we can compute a weighted majority vote by associating a weight $w_j$ with classifier $C_j$:\n",
    "\n",
    "$$\\hat{y} = \\arg \\max_i \\sum^{m}_{j=1} w_j \\chi_A \\big(C_j(\\mathbf{x})=i\\big),$$\n",
    "\n",
    "where $\\chi_A$ is the characteristic function $[C_j(\\mathbf{x}) = i \\; \\in A]$, and $A$ is the set of unique class labels. \n",
    "\n",
    "Continuing with the example from the previous section\n",
    "\n",
    "- classifier 1 -> class 0\n",
    "- classifier 2 -> class 0\n",
    "- classifier 3 -> class 1\n",
    "\n",
    "assigning the weights \\{0.2, 0.2, 0.6\\} would yield a prediction $\\hat{y} = 1$:\n",
    "\n",
    "$$\\arg \\max_i [0.2 \\times i_0 + 0.2 \\times i_0 + 0.6 \\times i_1] = 1$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Soft Voting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In soft voting, we predict the class labels based on the predicted probabilities $p$ for classifier -- this approach is only recommended if the classifiers are well-calibrated.\n",
    "\n",
    "$$\\hat{y} = \\arg \\max_i \\sum^{m}_{j=1} w_j p_{ij},$$\n",
    "\n",
    "where $w_j$ is the weight that can be assigned to the $j$th classifier.\n",
    "\n",
    "Assuming the example in the previous section was a binary classification task with class labels $i \\in \\{0, 1\\}$, our ensemble could make the following prediction:\n",
    "\n",
    "- $C_1(\\mathbf{x}) \\rightarrow [0.9, 0.1]$\n",
    "- $C_2(\\mathbf{x}) \\rightarrow [0.8, 0.2]$\n",
    "- $C_3(\\mathbf{x}) \\rightarrow [0.4, 0.6]$\n",
    "\n",
    "Using uniform weights, we compute the average probabilities:\n",
    "\n",
    "$$p(i_0 \\mid \\mathbf{x}) = \\frac{0.9 + 0.8 + 0.4}{3} = 0.7 \\\\\\\\\n",
    "p(i_1 \\mid \\mathbf{x}) = \\frac{0.1 + 0.2 + 0.6}{3} = 0.3$$\n",
    "\n",
    "$$\\hat{y} = \\arg \\max_i \\big[p(i_0 \\mid \\mathbf{x}), p(i_1 \\mid \\mathbf{x}) \\big] = 0$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "However, assigning the weights \\{0.1, 0.1, 0.8\\} would yield a prediction $\\hat{y} = 1$:\n",
    "    \n",
    "$$p(i_0 \\mid \\mathbf{x}) = {0.1 \\times 0.9 + 0.1 \\times 0.8 + 0.8 \\times  0.4} = 0.49 \\\\\\\\\n",
    "p(i_1 \\mid \\mathbf{x}) = {0.1 \\times 0.1 + 0.2 \\times 0.1 + 0.8 \\times 0.6} = 0.51$$\n",
    "\n",
    "$$\\hat{y} = \\arg \\max_i \\big[p(i_0 \\mid \\mathbf{x}), p(i_1 \\mid \\mathbf{x}) \\big] = 1$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- [1] S. Raschka. [Python Machine Learning](https://github.com/rasbt/python-machine-learning-book). Packt Publishing Ltd., 2015."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 -  Classifying Iris Flowers Using Different Classification Models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "X, y = iris.data[:, 1:3], iris.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5-fold cross validation:\n",
      "\n",
      "Accuracy: 0.90 (+/- 0.05) [Logistic Regression]\n",
      "Accuracy: 0.93 (+/- 0.05) [Random Forest]\n",
      "Accuracy: 0.91 (+/- 0.04) [Naive Bayes]\n"
     ]
    }
   ],
   "source": [
    "from sklearn import model_selection\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.naive_bayes import GaussianNB \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "import numpy as np\n",
    "\n",
    "clf1 = LogisticRegression(random_state=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "\n",
    "print('5-fold cross validation:\\n')\n",
    "\n",
    "labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes']\n",
    "\n",
    "for clf, label in zip([clf1, clf2, clf3], labels):\n",
    "\n",
    "    scores = model_selection.cross_val_score(clf, X, y, \n",
    "                                              cv=5, \n",
    "                                              scoring='accuracy')\n",
    "    print(\"Accuracy: %0.2f (+/- %0.2f) [%s]\"\n",
    "          % (scores.mean(), scores.std(), label))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 0.90 (+/- 0.05) [Logistic Regression]\n",
      "Accuracy: 0.93 (+/- 0.05) [Random Forest]\n",
      "Accuracy: 0.91 (+/- 0.04) [Naive Bayes]\n",
      "Accuracy: 0.95 (+/- 0.05) [Ensemble]\n"
     ]
    }
   ],
   "source": [
    "from mlxtend.classifier import EnsembleVoteClassifier\n",
    "\n",
    "eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1])\n",
    "\n",
    "labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes', 'Ensemble']\n",
    "for clf, label in zip([clf1, clf2, clf3, eclf], labels):\n",
    "\n",
    "    scores = model_selection.cross_val_score(clf, X, y, \n",
    "                                              cv=5, \n",
    "                                              scoring='accuracy')\n",
    "    print(\"Accuracy: %0.2f (+/- %0.2f) [%s]\" \n",
    "          % (scores.mean(), scores.std(), label))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Plotting Decision Regions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10974edd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "import matplotlib.gridspec as gridspec\n",
    "import itertools\n",
    "\n",
    "gs = gridspec.GridSpec(2, 2)\n",
    "\n",
    "fig = plt.figure(figsize=(10,8))\n",
    "\n",
    "labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes', 'Ensemble']\n",
    "for clf, lab, grd in zip([clf1, clf2, clf3, eclf],\n",
    "                         labels,\n",
    "                         itertools.product([0, 1], repeat=2)):\n",
    "\n",
    "    clf.fit(X, y)\n",
    "    ax = plt.subplot(gs[grd[0], grd[1]])\n",
    "    fig = plot_decision_regions(X=X, y=y, clf=clf)\n",
    "    plt.title(lab)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a1663deb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "import matplotlib.gridspec as gridspec\n",
    "import itertools\n",
    "\n",
    "gs = gridspec.GridSpec(2, 2)\n",
    "\n",
    "fig = plt.figure(figsize=(10,8))\n",
    "\n",
    "labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes', 'Ensemble']\n",
    "for clf, lab, grd in zip([clf1, clf2, clf3, eclf],\n",
    "                         labels,\n",
    "                         itertools.product([0, 1], repeat=2)):\n",
    "\n",
    "    clf.fit(X, y)\n",
    "    ax = plt.subplot(gs[grd[0], grd[1]])\n",
    "    fig = plot_decision_regions(X=X, y=y, clf=clf)\n",
    "    plt.title(lab)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Grid Search"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "X, y = iris.data[:, 1:3], iris.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.953 +/- 0.01 {'logisticregression__C': 1.0, 'randomforestclassifier__n_estimators': 20}\n",
      "0.960 +/- 0.01 {'logisticregression__C': 1.0, 'randomforestclassifier__n_estimators': 200}\n",
      "0.960 +/- 0.01 {'logisticregression__C': 100.0, 'randomforestclassifier__n_estimators': 20}\n",
      "0.953 +/- 0.02 {'logisticregression__C': 100.0, 'randomforestclassifier__n_estimators': 200}\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.naive_bayes import GaussianNB \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from mlxtend.classifier import EnsembleVoteClassifier\n",
    "\n",
    "clf1 = LogisticRegression(random_state=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], voting='soft')\n",
    "\n",
    "params = {'logisticregression__C': [1.0, 100.0],\n",
    "          'randomforestclassifier__n_estimators': [20, 200],}\n",
    "\n",
    "grid = GridSearchCV(estimator=eclf, param_grid=params, cv=5)\n",
    "grid.fit(iris.data, iris.target)\n",
    "    \n",
    "cv_keys = ('mean_test_score', 'std_test_score', 'params')\n",
    "\n",
    "for r, _ in enumerate(grid.cv_results_['mean_test_score']):\n",
    "    print(\"%0.3f +/- %0.2f %r\"\n",
    "          % (grid.cv_results_[cv_keys[0]][r],\n",
    "             grid.cv_results_[cv_keys[1]][r] / 2.0,\n",
    "             grid.cv_results_[cv_keys[2]][r]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note**: If the `EnsembleClassifier` is initialized with multiple similar estimator objects, the estimator names are modified with consecutive integer indices, for example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf1 = LogisticRegression(random_state=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "eclf = EnsembleVoteClassifier(clfs=[clf1, clf1, clf2], \n",
    "                              voting='soft')\n",
    "\n",
    "params = {'logisticregression-1__C': [1.0, 100.0],\n",
    "          'logisticregression-2__C': [1.0, 100.0],\n",
    "          'randomforestclassifier__n_estimators': [20, 200],}\n",
    "\n",
    "grid = GridSearchCV(estimator=eclf, param_grid=params, cv=5)\n",
    "grid = grid.fit(iris.data, iris.target)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note**\n",
    "\n",
    "The `EnsembleVoteClass` also enables grid search over the `clfs` argument. However, due to the current implementation of `GridSearchCV` in scikit-learn, it is not possible to search over both, differenct classifiers and classifier parameters at the same time. For instance, while the following parameter dictionary works\n",
    "\n",
    "    params = {'randomforestclassifier__n_estimators': [1, 100],\n",
    "    'clfs': [(clf1, clf1, clf1), (clf2, clf3)]}\n",
    "    \n",
    "it will use the instance settings of `clf1`, `clf2`, and `clf3` and not overwrite it with the `'n_estimators'` settings from `'randomforestclassifier__n_estimators': [1, 100]`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 3 - Majority voting with classifiers trained on different feature subsets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Feature selection algorithms implemented in scikit-learn as well as the `SequentialFeatureSelector` implement a `transform` method that passes the reduced feature subset to the next item in a `Pipeline`.\n",
    "\n",
    "For example, the method\n",
    "\n",
    "    def transform(self, X):\n",
    "        return X[:, self.k_feature_idx_]\n",
    "        \n",
    "returns the best feature columns, `k_feature_idx_`, given a dataset X."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Thus, we simply need to construct a `Pipeline` consisting of the feature selector and the classifier in order to select different feature subsets for different algorithms. During `fitting`, the optimal feature subsets are automatically determined via the `GridSearchCV` object, and by calling `predict`, the fitted feature selector in the pipeline only passes these columns along, which resulted in the best performance for the respective classifier."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.953 +/- 0.01 {'pipeline__logreg__C': 1.0, 'pipeline__sfs__k_features': 1, 'randomforestclassifier__n_estimators': 20}\n",
      "0.947 +/- 0.02 {'pipeline__logreg__C': 1.0, 'pipeline__sfs__k_features': 1, 'randomforestclassifier__n_estimators': 200}\n",
      "0.953 +/- 0.01 {'pipeline__logreg__C': 1.0, 'pipeline__sfs__k_features': 2, 'randomforestclassifier__n_estimators': 20}\n",
      "0.947 +/- 0.02 {'pipeline__logreg__C': 1.0, 'pipeline__sfs__k_features': 2, 'randomforestclassifier__n_estimators': 200}\n",
      "0.953 +/- 0.01 {'pipeline__logreg__C': 1.0, 'pipeline__sfs__k_features': 3, 'randomforestclassifier__n_estimators': 20}\n",
      "0.953 +/- 0.02 {'pipeline__logreg__C': 1.0, 'pipeline__sfs__k_features': 3, 'randomforestclassifier__n_estimators': 200}\n",
      "0.947 +/- 0.02 {'pipeline__logreg__C': 100.0, 'pipeline__sfs__k_features': 1, 'randomforestclassifier__n_estimators': 20}\n",
      "0.953 +/- 0.02 {'pipeline__logreg__C': 100.0, 'pipeline__sfs__k_features': 1, 'randomforestclassifier__n_estimators': 200}\n",
      "0.947 +/- 0.02 {'pipeline__logreg__C': 100.0, 'pipeline__sfs__k_features': 2, 'randomforestclassifier__n_estimators': 20}\n",
      "0.947 +/- 0.02 {'pipeline__logreg__C': 100.0, 'pipeline__sfs__k_features': 2, 'randomforestclassifier__n_estimators': 200}\n",
      "0.960 +/- 0.01 {'pipeline__logreg__C': 100.0, 'pipeline__sfs__k_features': 3, 'randomforestclassifier__n_estimators': 20}\n",
      "0.953 +/- 0.02 {'pipeline__logreg__C': 100.0, 'pipeline__sfs__k_features': 3, 'randomforestclassifier__n_estimators': 200}\n"
     ]
    }
   ],
   "source": [
    "from sklearn import datasets\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "X, y = iris.data[:, :], iris.target\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.naive_bayes import GaussianNB \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from mlxtend.classifier import EnsembleVoteClassifier\n",
    "from sklearn.pipeline import Pipeline\n",
    "from mlxtend.feature_selection import SequentialFeatureSelector\n",
    "\n",
    "clf1 = LogisticRegression(random_state=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "\n",
    "# Creating a feature-selection-classifier pipeline\n",
    "\n",
    "sfs1 = SequentialFeatureSelector(clf1, \n",
    "                                 k_features=4,\n",
    "                                 forward=True, \n",
    "                                 floating=False, \n",
    "                                 scoring='accuracy',\n",
    "                                 verbose=0,\n",
    "                                 cv=0)\n",
    "\n",
    "clf1_pipe = Pipeline([('sfs', sfs1),\n",
    "                      ('logreg', clf1)])\n",
    "\n",
    "eclf = EnsembleVoteClassifier(clfs=[clf1_pipe, clf2, clf3], \n",
    "                              voting='soft')\n",
    "\n",
    "\n",
    "params = {'pipeline__sfs__k_features': [1, 2, 3],\n",
    "          'pipeline__logreg__C': [1.0, 100.0],\n",
    "          'randomforestclassifier__n_estimators': [20, 200]}\n",
    "\n",
    "grid = GridSearchCV(estimator=eclf, param_grid=params, cv=5)\n",
    "grid.fit(iris.data, iris.target)\n",
    "\n",
    "\n",
    "\n",
    "cv_keys = ('mean_test_score', 'std_test_score', 'params')\n",
    "\n",
    "for r, _ in enumerate(grid.cv_results_['mean_test_score']):\n",
    "    print(\"%0.3f +/- %0.2f %r\"\n",
    "          % (grid.cv_results_[cv_keys[0]][r],\n",
    "             grid.cv_results_[cv_keys[1]][r] / 2.0,\n",
    "             grid.cv_results_[cv_keys[2]][r]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The best parameters determined via GridSearch are:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'pipeline__logreg__C': 100.0,\n",
       " 'pipeline__sfs__k_features': 3,\n",
       " 'randomforestclassifier__n_estimators': 20}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.best_params_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we assign these parameters to the ensemble voting classifier, fit the models on the complete training set, and perform a prediction on 3 samples from the Iris dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eclf = eclf.set_params(**grid.best_params_)\n",
    "eclf.fit(X, y).predict(X[[1, 51, 149]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Manual Approach"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatively, we can select different columns \"manually\" using the `ColumnSelector` object. In this example, we select only the first (sepal length) and third (petal length) column for the logistic regression classifier (`clf1`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from mlxtend.feature_selection import ColumnSelector\n",
    "\n",
    "\n",
    "col_sel = ColumnSelector(cols=[0, 2])\n",
    "\n",
    "clf1_pipe = Pipeline([('sel', col_sel),\n",
    "                      ('logreg', clf1)])\n",
    "\n",
    "eclf = EnsembleVoteClassifier(clfs=[clf1_pipe, clf2, clf3],\n",
    "                              voting='soft')\n",
    "eclf.fit(X, y).predict(X[[1, 51, 149]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Furthermore, we can fit the `SequentialFeatureSelector` separately, outside the grid search hyperparameter optimization pipeline. Here, we determine the best features first, and then we construct a pipeline using these \"fixed,\" best features as seed for the `ColumnSelector`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Done   4 out of   4 | elapsed:    0.0s finished\n",
      "Features: 1/2[Parallel(n_jobs=1)]: Done   3 out of   3 | elapsed:    0.0s finished\n",
      "Features: 2/2"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best features (0, 2)\n"
     ]
    }
   ],
   "source": [
    "sfs1 = SequentialFeatureSelector(clf1, \n",
    "                                 k_features=2,\n",
    "                                 forward=True, \n",
    "                                 floating=False, \n",
    "                                 scoring='accuracy',\n",
    "                                 verbose=1,\n",
    "                                 cv=0)\n",
    "\n",
    "sfs1.fit(X, y)\n",
    "\n",
    "print('Best features', sfs1.k_feature_idx_)\n",
    "\n",
    "col_sel = ColumnSelector(cols=sfs1.k_feature_idx_)\n",
    "\n",
    "clf1_pipe = Pipeline([('sel', col_sel),\n",
    "                      ('logreg', clf1)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eclf = EnsembleVoteClassifier(clfs=[clf1_pipe, clf2, clf3], \n",
    "                              voting='soft')\n",
    "eclf.fit(X, y).predict(X[[1, 51, 149]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 5 - Using Pre-fitted Classifiers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "X, y = iris.data[:, 1:3], iris.target"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Assume that we previously fitted our classifiers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import model_selection\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.naive_bayes import GaussianNB \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "import numpy as np\n",
    "\n",
    "clf1 = LogisticRegression(random_state=1)\n",
    "clf2 = RandomForestClassifier(random_state=1)\n",
    "clf3 = GaussianNB()\n",
    "\n",
    "for clf in (clf1, clf2, clf3):\n",
    "    clf.fit(X, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By setting `refit=False`, the `EnsembleVoteClassifier` will not re-fit these classifers to save computational time:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.973333333333\n"
     ]
    }
   ],
   "source": [
    "from mlxtend.classifier import EnsembleVoteClassifier\n",
    "import copy\n",
    "eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], weights=[1,1,1], refit=False)\n",
    "\n",
    "labels = ['Logistic Regression', 'Random Forest', 'Naive Bayes', 'Ensemble']\n",
    "\n",
    "eclf.fit(X, y)\n",
    "\n",
    "print('accuracy:', np.mean(y == eclf.predict(X)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "However, please note that `refit=False` is incompatible to any form of cross-validation that is done in e.g., `model_selection.cross_val_score` or `model_selection.GridSearchCV`, etc., since it would require the classifiers to be refit to the training folds. Thus, only use `refit=False` if you want to make a prediction directly without cross-validation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 6 - Ensembles of Classifiers that Operate on Different Feature Subsets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If desired, the different classifiers can be fit to different subsets of features in the training dataset. The following example illustrates how this can be done on a technical level using scikit-learn pipelines and the `ColumnSelector`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "EnsembleVoteClassifier(clfs=[Pipeline(memory=None,\n",
       "     steps=[('columnselector', ColumnSelector(cols=(0, 2), drop_axis=False)), ('logisticregression', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l...='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False))])],\n",
       "            refit=True, verbose=0, voting='hard', weights=None)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "from mlxtend.classifier import EnsembleVoteClassifier\n",
    "from mlxtend.feature_selection import ColumnSelector\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "iris = load_iris()\n",
    "X = iris.data\n",
    "y = iris.target\n",
    "\n",
    "pipe1 = make_pipeline(ColumnSelector(cols=(0, 2)),\n",
    "                      LogisticRegression())\n",
    "pipe2 = make_pipeline(ColumnSelector(cols=(1, 2, 3)),\n",
    "                      LogisticRegression())\n",
    "\n",
    "eclf = EnsembleVoteClassifier(clfs=[pipe1, pipe2])\n",
    "\n",
    "eclf.fit(X, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 7 - A Note about Scikit-Learn SVMs and Soft Voting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This section provides some additional technical insights in how probabilities are used when `voting='soft'`. \n",
    "\n",
    "\n",
    "Note that scikit-learn estimates the probabilities for SVMs (more info here: http://scikit-learn.org/stable/modules/svm.html#scores-probabilities) in a way that these may not be consistent with the class labels that the SVM predicts. This is an extreme example, but let's say we have a dataset with 3 class labels, 0, 1, and 2. For a given training example, the SVM classifier may predict class 2. However, the class-membership probabilities may look as follows:\n",
    "\n",
    "- class 0: 99%\n",
    "- class 1: 0.5%\n",
    "- class 2: 0.5%\n",
    "\n",
    "A practical example of this scenario is shown below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============\n",
      "Probas from SVM            : [ 0.01192489  0.47662663  0.51144848]\n",
      "Class from SVM             : 1\n",
      "Probas from SVM in Ensemble: [ 0.01192489  0.47662663  0.51144848]\n",
      "Class from SVM in Ensemble : 2\n",
      "============\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from mlxtend.classifier import EnsembleVoteClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.datasets import load_iris\n",
    "\n",
    "iris = load_iris()\n",
    "X, y = iris.data, iris.target\n",
    "\n",
    "clf2 = SVC(probability=True, random_state=4)\n",
    "clf2.fit(X, y)\n",
    "eclf = EnsembleVoteClassifier(clfs=[clf2], voting='soft', refit=False)\n",
    "eclf.fit(X, y)\n",
    "\n",
    "for svm_class, e_class, svm_prob, e_prob, in zip(clf2.predict(X),\n",
    "                                                 eclf.predict(X),\n",
    "                                                 clf2.predict_proba(X),\n",
    "                                                 eclf.predict_proba(X)):\n",
    "    if svm_class != e_class:\n",
    "        print('============')\n",
    "        print('Probas from SVM            :', svm_prob)\n",
    "        print('Class from SVM             :', svm_class)\n",
    "        print('Probas from SVM in Ensemble:', e_prob)\n",
    "        print('Class from SVM in Ensemble :', e_class)\n",
    "        print('============')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Based on the probabilities, we would expect the SVM to predict class 2, because it has the highest probability. Since the `EnsembleVoteClassifier` uses the `argmax` function internally if `voting='soft'`, it would indeed predict class 2 in this case even if the ensemble consists of only one SVM model.\n",
    "\n",
    "Note that in practice, this minor technical detail does not need to concern you, but it is useful to keep it in mind in case you are wondering about results from a 1-model SVM ensemble compared to that SVM alone -- this is not a bug."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## EnsembleVoteClassifier\n",
      "\n",
      "*EnsembleVoteClassifier(clfs, voting='hard', weights=None, verbose=0, refit=True)*\n",
      "\n",
      "Soft Voting/Majority Rule classifier for scikit-learn estimators.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `clfs` : array-like, shape = [n_classifiers]\n",
      "\n",
      "    A list of classifiers.\n",
      "    Invoking the `fit` method on the `VotingClassifier` will fit clones\n",
      "    of those original classifiers that will\n",
      "    be stored in the class attribute\n",
      "    `self.clfs_` if `refit=True` (default).\n",
      "\n",
      "- `voting` : str, {'hard', 'soft'} (default='hard')\n",
      "\n",
      "    If 'hard', uses predicted class labels for majority rule voting.\n",
      "    Else if 'soft', predicts the class label based on the argmax of\n",
      "    the sums of the predicted probalities, which is recommended for\n",
      "    an ensemble of well-calibrated classifiers.\n",
      "\n",
      "- `weights` : array-like, shape = [n_classifiers], optional (default=`None`)\n",
      "\n",
      "    Sequence of weights (`float` or `int`) to weight the occurances of\n",
      "    predicted class labels (`hard` voting) or class probabilities\n",
      "    before averaging (`soft` voting). Uses uniform weights if `None`.\n",
      "\n",
      "- `verbose` : int, optional (default=0)\n",
      "\n",
      "    Controls the verbosity of the building process.\n",
      "    - `verbose=0` (default): Prints nothing\n",
      "    - `verbose=1`: Prints the number & name of the clf being fitted\n",
      "    - `verbose=2`: Prints info about the parameters of the clf being fitted\n",
      "    - `verbose>2`: Changes `verbose` param of the underlying clf to\n",
      "    self.verbose - 2\n",
      "\n",
      "- `refit` : bool (default: True)\n",
      "\n",
      "    Refits classifiers in `clfs` if True; uses references to the `clfs`,\n",
      "    otherwise (assumes that the classifiers were already fit).\n",
      "    Note: refit=False is incompatible to mist scikit-learn wrappers!\n",
      "    For instance, if any form of cross-validation is performed\n",
      "    this would require the re-fitting classifiers to training folds, which\n",
      "    would raise a NotFitterError if refit=False.\n",
      "    (New in mlxtend v0.6.)\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `classes_` : array-like, shape = [n_predictions]\n",
      "\n",
      "\n",
      "- `clf` : array-like, shape = [n_predictions]\n",
      "\n",
      "    The unmodified input classifiers\n",
      "\n",
      "- `clf_` : array-like, shape = [n_predictions]\n",
      "\n",
      "    Fitted clones of the input classifiers\n",
      "\n",
      "**Examples**\n",
      "\n",
      "    >>> import numpy as np\n",
      "    >>> from sklearn.linear_model import LogisticRegression\n",
      "    >>> from sklearn.naive_bayes import GaussianNB\n",
      "    >>> from sklearn.ensemble import RandomForestClassifier\n",
      "    >>> from mlxtend.sklearn import EnsembleVoteClassifier\n",
      "    >>> clf1 = LogisticRegression(random_seed=1)\n",
      "    >>> clf2 = RandomForestClassifier(random_seed=1)\n",
      "    >>> clf3 = GaussianNB()\n",
      "    >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])\n",
      "    >>> y = np.array([1, 1, 1, 2, 2, 2])\n",
      "    >>> eclf1 = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3],\n",
      "    ... voting='hard', verbose=1)\n",
      "    >>> eclf1 = eclf1.fit(X, y)\n",
      "    >>> print(eclf1.predict(X))\n",
      "    [1 1 1 2 2 2]\n",
      "    >>> eclf2 = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], voting='soft')\n",
      "    >>> eclf2 = eclf2.fit(X, y)\n",
      "    >>> print(eclf2.predict(X))\n",
      "    [1 1 1 2 2 2]\n",
      "    >>> eclf3 = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3],\n",
      "    ...                          voting='soft', weights=[2,1,1])\n",
      "    >>> eclf3 = eclf3.fit(X, y)\n",
      "    >>> print(eclf3.predict(X))\n",
      "    [1 1 1 2 2 2]\n",
      "    >>>\n",
      "\n",
      "For more usage examples, please see\n",
      "[http://rasbt.github.io/mlxtend/user_guide/classifier/EnsembleVoteClassifier/](http://rasbt.github.io/mlxtend/user_guide/classifier/EnsembleVoteClassifier/)\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y)*\n",
      "\n",
      "Learn weight coefficients from training data for each classifier.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit_transform(X, y=None, **fit_params)*\n",
      "\n",
      "Fit to data, then transform it.\n",
      "\n",
      "Fits transformer to X and y with optional parameters fit_params\n",
      "and returns a transformed version of X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : numpy array of shape [n_samples, n_features]\n",
      "\n",
      "    Training set.\n",
      "\n",
      "\n",
      "- `y` : numpy array of shape [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `X_new` : numpy array of shape [n_samples, n_features_new]\n",
      "\n",
      "    Transformed array.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*get_params(deep=True)*\n",
      "\n",
      "Return estimator parameter names for GridSearch support.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict class labels for X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `maj` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted class labels.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict_proba(X)*\n",
      "\n",
      "Predict class probabilities for X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `avg` : array-like, shape = [n_samples, n_classes]\n",
      "\n",
      "    Weighted average probability for each class per sample.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*score(X, y, sample_weight=None)*\n",
      "\n",
      "Returns the mean accuracy on the given test data and labels.\n",
      "\n",
      "In multi-label classification, this is the subset accuracy\n",
      "which is a harsh metric since you require for each sample that\n",
      "each label set be correctly predicted.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : array-like, shape = (n_samples, n_features)\n",
      "\n",
      "    Test samples.\n",
      "\n",
      "\n",
      "- `y` : array-like, shape = (n_samples) or (n_samples, n_outputs)\n",
      "\n",
      "    True labels for X.\n",
      "\n",
      "\n",
      "- `sample_weight` : array-like, shape = [n_samples], optional\n",
      "\n",
      "    Sample weights.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `score` : float\n",
      "\n",
      "    Mean accuracy of self.predict(X) wrt. y.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*set_params(**params)*\n",
      "\n",
      "Set the parameters of this estimator.\n",
      "\n",
      "The method works on simple estimators as well as on nested objects\n",
      "(such as pipelines). The latter have parameters of the form\n",
      "``<component>__<parameter>`` so that it's possible to update each\n",
      "component of a nested object.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "self\n",
      "\n",
      "<hr>\n",
      "\n",
      "*transform(X)*\n",
      "\n",
      "Return class labels or probabilities for X for each estimator.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `If `voting='soft'`` : array-like = [n_classifiers, n_samples, n_classes]\n",
      "\n",
      "    Class probabilties calculated by each classifier.\n",
      "\n",
      "- `If `voting='hard'`` : array-like = [n_classifiers, n_samples]\n",
      "\n",
      "    Class labels predicted by each classifier.\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.classifier/EnsembleVoteClassifier.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
